package com.jietuo.class01;

import java.util.Arrays;

import static com.sun.tools.javac.jvm.ByteCodes.swap;

/**
 * @author zhangx & jietuo_zx@163.com
 * @version 1.0
 * @date 2024/3/1
 * @description: 选择排序
 */
public class Code01_SelectionSort {

    public static void main(String[] args) {
        int[] arr = new int[]{4, 7, 2, 9, 5, 10};
        int[] ints = selectionSort(arr);
        String s = Arrays.toString(ints);
        System.out.println(s);
    }

    /**
     * 选择排序
     * step1：先从0~n-1 中选择一个最小的
     * step2: 将最小的和0位置上的数交换
     * step3: 然后从1 ~ n-1 中选择一个最小的 和 1 位置上做交换
     * ...
     * 最后返回
     *
     * @param array 待排序数组
     * @return 排好序的数组
     */
    public static int[] selectionSort(int[] array) {
        for (int i = 0; i < array.length - 1; i++) {
            for (int j = i + 1; j < array.length; j++) {
                int minPosition = 0;
                if (array[i] < array[j]) {
                    minPosition = i;
                } else {
                    minPosition = j;
                }
                swap(array, i, minPosition);
            }

        }
        return array;
    }

    private static void swap(int[] array, int i, int j) {
        array[i] = array[i] ^ array[j];
        array[j] = array[i] ^ array[j];
        array[i] = array[i] ^ array[j];
    }
}

